package com.fafica.fachada;

import com.fafica.cadastros.CadastroAlunoFafica;
import com.fafica.cadastros.CadastroArtigo;
import com.fafica.cadastros.CadastroGrupoTrabalho;
import com.fafica.cadastros.CadastroInscrito;
import com.fafica.cadastros.CadastroMinicurso;
import com.fafica.cadastros.CadastroInscricaoMinicurso;
import com.fafica.dao.AlunoFaficaDAO;
import com.fafica.dao.ArtigoDAO;
import com.fafica.dao.GrupoTrabalhoDAO;
import com.fafica.dao.InscritoDAO;
import com.fafica.dao.MinicursoDAO;
import com.fafica.dao.InscritoMinicursoDAO;

public class Fachada {

	private static Fachada fachada;
	private CadastroInscricaoMinicurso cadUsuario;
	private CadastroAlunoFafica cadAlunoFafica;
	private CadastroArtigo cadArtigo;
	private CadastroGrupoTrabalho cadGrupoTrabalho;
	private CadastroMinicurso cadMinicurso;
	private CadastroInscrito cadInscrito;
	
	private Fachada(){
		inicializar();
	}
	
	private void inicializar(){
		
		InscritoMinicursoDAO usuario = new InscritoMinicursoDAO();
		cadUsuario = new CadastroInscricaoMinicurso(usuario);
		
		AlunoFaficaDAO aluno = new AlunoFaficaDAO();
		cadAlunoFafica = new CadastroAlunoFafica(aluno);
		
		ArtigoDAO artigo = new ArtigoDAO();
		cadArtigo = new CadastroArtigo(artigo);
		
		GrupoTrabalhoDAO gt = new GrupoTrabalhoDAO();
		cadGrupoTrabalho = new CadastroGrupoTrabalho(gt);
		
		MinicursoDAO mini = new MinicursoDAO();
		cadMinicurso = new CadastroMinicurso(mini);
		
		InscritoDAO inscrito = new InscritoDAO();
		cadInscrito = new CadastroInscrito(inscrito);
	}
	
	public static Fachada getInstance(){
		if(fachada == null){
			fachada = new Fachada();
		}
		return fachada;
	}
	
	public CadastroInscricaoMinicurso cadastroUsuario(){
		return cadUsuario;
	}
	
	public CadastroAlunoFafica cadastroAlunoFafica(){
		return cadAlunoFafica;
	}
	
	public CadastroArtigo cadastroArtigo(){
		return cadArtigo;
	}
	
	public CadastroGrupoTrabalho cadastroGrupoTrabalho(){
		return cadGrupoTrabalho;
	}
	
	public CadastroMinicurso cadastroMinicurso(){
		return cadMinicurso;
	}
	
	public CadastroInscrito cadastroInscrito(){
		return cadInscrito;
	}
}
